//
//
//class Solution {
//    public ListNode mergeKLists(ListNode[] lists) {
//        if (lists == null || lists.length == 0) return null;
//        ListNode ret = lists[0];
//        for (int i = 1; i < lists.length; i++) {
//            ListNode tmp = lists[i];
//            ret = merge(ret, tmp);
//        }
//        return ret;
//    }
//
//    public ListNode merge(ListNode head1, ListNode head2) {
//        ListNode dummy = new ListNode();
//        ListNode cur = dummy;
//        while (head1 != null && head2 != null) {
//            if (head1.val <= head2.val) {
//                cur.next = head1;
//                head1 = head1.next;
//            } else {
//                cur.next = head2;
//                head2 = head2.next;
//            }
//            cur = cur.next;
//        }
//        if (head1 != null) cur.next = head1;
//        if (head2 != null) cur.next = head2;
//        return dummy.next;
//    }
//}